Many prior art computer systems have a plurality of loci of control, i.e., there is more than one entity in the computer system which may execute a program. The relationship between the loci of control and the system hardware varies from system to system. In some systems, a locus of control corresponds directly to a portion of a physical system. For example, in a distributed system connected by a network, each locus may be a node in the network. In others, the locus of control may be a task, and one or more CPUs in a system may be multiplexed among a plurality of tasks.
Systems having a plurality of loci of control permit distributed data processing, i.e., data processing involving more than one locus of control. For example, a corporation may have a computer system consisting of a network with nodes at various branch offices, at regional offices, and the head office. The processing of expense reports for the corporation may involve processing in the branch offices, further processing at the regional offices, and still further processing at the head office.
The advantages of distributed data processing are obvious. It corresponds more closely to normal business procedures than centralized processing, the turnaround time at each stage is quicker, and the fact that processing is carried on at many loci of control reduces the effect of the failure of any one of the loci. The use of distributed data processing has, however, been limited by the difficulties involved in programming for more than one locus. In programming for a single locus, a programmer need concern himself only with the sequence of operations to be performed; in programming for a plurality of loci, the programmer must write code for each of the loci and further specify communications between the loci. Even where the loci are tasks executing on a single system, the need to specify communications requires knowledge of the operating system not typically found among applications programmers. Where the loci are nodes in a network, the communications problem is more difficult. Moreover, in many cases, the nodes will have different kinds of processors, and consequently, writing a distributed application requires either a programmer who understands all of the processors or a group of programmers. Programmers of the former type are rare and expensive, and communication among a group of programmers is difficult, particularly when the programmers are programming different machines and may further be geographically dispersed.
Prior art solutions to distributed processing have included systems in which processing is distributed among the loci but remains under central control and systems in which processing is under local control. An example of the first type of system is the active mail system described in "An Active Mail System" by John Hogg and Stelios Gamvroulas, SIGMOD 1984 Proceedings, Boston, Pages 215-222, 1984.
The system described in the reference is an active mail system for processing messages. The messages are not merely passive text which is sent to recipients. Instead, a message is active and can perform functions such as receiving information from the recipient and providing it to the sender or using the information from the recipient to determine who the next recipient should be and directing itself to the next recipient. As may be seen at Page 218 of the above reference, the embodiment of active mail described therein is implemented by means of a single central post office process which controls the messages at every point.
A commercial product which appears to embody the principles described in the above reference is Staffware, manufactured by FCMC, Inc., 2750 S. Wadsworth Blvd., Denver, Colo. 80227. Staffware is described in the following publications: Staffware Brochure and Demonstration Disk, FCMC, Inc., Denver, May 1985; "Routine Automation", The Seybold Report on Office Systems, Volume 8, No. 6, Page 18, Jun. 3, 1985; Kevin Townsend, "Corporate Computing Catches Up with PCs", Computer Weekly, Feb. 13, 1986; and "Staffware", Which Computer?, March 1986.
As described in the above publications, Staffware is a centralized system for automating business procedures where processing takes place at one or more locations accessible to the centralized system. Another product which appears to embody the same principles is the Workflo component of the Filenet document image processing system, manufactured by Filenet Corp., Costa Mesa, Cal.
An example of a system in which the distributed processing operates under local control is the office information routing system described in: Murray S. Mazer, Frederick H. Lochovsky, "Logical Routing Specification in Office Information Systems", ACM Transactions on Office Information Systems, Vol. 2. No. 4, October 1984, Page 303-330. In that system, users define a routing specification for a type of message, for example a form for deciding whether a candidate is to be admitted to a Ph.D. program. The routine specification describes how the message is to be routed among the loci, and can vary the routing depending on the values of fields in the message. Once the routing specification is finished, the portion of the specification relevant to a given locus is sent to that locus. When a message of the type corresponding to the routing specification arrives in the locus, it is processed as specified in that locus's portion of the routing specification. The system also provides for override routing, in which the routing specification is edited for a given message, the altered specification is provided to the message, and further routing is as specified in the altered specification. The routing specification does not specify processing beyond routing.
A problem shared by both the centralized and distributed prior art systems is that the actual routing is done centrally. In the case of the active message systems, the recipient of the message cannot alter the processing of the message to suit his situation, and in the case of the Mazer-Lochovsky system, the route specification is centrally defined and alterations may be made only by means of the override specification. The person making the override specification must have a copy of the route specification and must further know where the message presently is (Mazer and Lochovsky, pp. 308-309). Overrides are consequently expensive and cannot be normal responses to the various situations encountered in the course of business procedures, but must be reserved for truly exceptional situations.
Centrally-produced routing which is difficult to alter is further not well suited to business procedures. Definition of many business procedures is hierarchical, i.e., an upper level of management gives an overall definition of the procedure and management in the departments which actually carry out the procedure fill in the details. Moreover, each business transaction is in fact unique, and consequently, a distributed data processing system used for business transactions will be useful only if it is easy to modify the manner in which a specific transaction is dealt with.
A further problem shared by the prior art systems is that the message systems are limited to a single data type, namely the message, whereas many business procedures require information having a number of different types. For example, a business ordering transaction may involve an image of the customer letter which initiated the transfer, internal memos discussing the order, and a "form" (implemented by means of a spread sheet) for recording the data associated with the transaction. A truly useful system must not only provide data of such different types to the user, but must also make it easy for him to work with each type of data in the manner required by the type.
A further limitation of the prior-art systems, finally, is that they are limited to interactive processing, i.e., they can present a message to a user for processing, but cannot apply the general resources of the locus to the message. Because this is the case, the prior-art systems cannot be used for general distributed data processing
A problem of the prior-art systems in which the distributed processing is centrally controlled is the large amount of communication required between the central control and the loci where the remote processing is being done. Because of the large amount of communication, performance of such systems becomes unacceptable when the loci are connected by a wide-area network.
A problem specific to the distribution systems, finally, is the tracking and control of the data as it is processed on the different loci. These, and other problems of the prior art are solved by the invention described herein